package com.example.smartagrisys.service;

import com.example.smartagrisys.entity.FertilizerInventory;
import com.example.smartagrisys.vo.FertilizerInventoryVO;

import java.math.BigDecimal;
import java.util.List;

/**
 * 肥料库存服务接口
 */
public interface FertilizerInventoryService {
    
    /**
     * 获取农户的肥料库存列表
     * @param farmerId 农户ID
     * @return 肥料库存列表
     */
    List<FertilizerInventoryVO> getInventoryByFarmerId(Long farmerId);
    
    /**
     * 添加肥料库存
     * @param inventory 肥料库存信息
     * @return 添加的肥料库存ID
     */
    Long addInventory(FertilizerInventory inventory);
    
    /**
     * 更新肥料库存
     * @param id 库存ID
     * @param inventory 肥料库存信息
     * @return 是否成功
     */
    boolean updateInventory(Long id, FertilizerInventory inventory);
    
    /**
     * 删除肥料库存
     * @param id 库存ID
     * @return 是否成功
     */
    boolean deleteInventory(Long id);
    
    /**
     * 检查并更新肥料库存（施肥时使用）
     * @param farmerId 农户ID
     * @param fertilizerId 肥料ID
     * @param quantity 使用数量
     * @return 是否成功
     */
    boolean checkAndUpdateInventory(Long farmerId, Long fertilizerId, BigDecimal quantity);
    
    /**
     * 获取单个肥料库存详情
     * @param id 库存ID
     * @return 肥料库存详情
     */
    FertilizerInventoryVO getInventoryById(Long id);
} 